﻿namespace TestTool.Proxies.Onvif
{
    using System;
    using System.CodeDom.Compiler;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.ServiceModel;
    using System.ServiceModel.Channels;
    using System.Xml;

    [GeneratedCode("System.ServiceModel", "3.0.0.0"), DebuggerStepThrough]
    public class DeviceIOPortClient : ClientBase<DeviceIOPort>, DeviceIOPort
    {
        public DeviceIOPortClient()
        {
        }

        public DeviceIOPortClient(string endpointConfigurationName) : base(endpointConfigurationName)
        {
        }

        public DeviceIOPortClient(Binding binding, EndpointAddress remoteAddress) : base(binding, remoteAddress)
        {
        }

        public DeviceIOPortClient(string endpointConfigurationName, EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress)
        {
        }

        public DeviceIOPortClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress)
        {
        }

        public AudioOutputConfiguration GetAudioOutputConfiguration(string AudioOutputToken, ref XmlElement[] Any)
        {
            GetAudioOutputConfigurationRequest request = new GetAudioOutputConfigurationRequest {
                AudioOutputToken = AudioOutputToken,
                Any = Any
            };
            GetAudioOutputConfigurationResponse audioOutputConfiguration = ((DeviceIOPort) this).GetAudioOutputConfiguration(request);
            Any = audioOutputConfiguration.Any;
            return audioOutputConfiguration.AudioOutputConfiguration;
        }

        public AudioOutputConfigurationOptions GetAudioOutputConfigurationOptions(string AudioOutputToken, ref XmlElement[] Any)
        {
            GetAudioOutputConfigurationOptionsRequest request = new GetAudioOutputConfigurationOptionsRequest {
                AudioOutputToken = AudioOutputToken,
                Any = Any
            };
            GetAudioOutputConfigurationOptionsResponse audioOutputConfigurationOptions = ((DeviceIOPort) this).GetAudioOutputConfigurationOptions(request);
            Any = audioOutputConfigurationOptions.Any;
            return audioOutputConfigurationOptions.AudioOutputOptions;
        }

        public AudioOutput[] GetAudioOutputs()
        {
            GetAudioOutputsRequest1 request = new GetAudioOutputsRequest1();
            return ((DeviceIOPort) this).GetAudioOutputs(request).AudioOutputs;
        }

        public AudioSourceConfiguration GetAudioSourceConfiguration(string AudioSourceToken, ref XmlElement[] Any)
        {
            GetAudioSourceConfigurationRequest request = new GetAudioSourceConfigurationRequest {
                AudioSourceToken = AudioSourceToken,
                Any = Any
            };
            GetAudioSourceConfigurationResponse audioSourceConfiguration = ((DeviceIOPort) this).GetAudioSourceConfiguration(request);
            Any = audioSourceConfiguration.Any;
            return audioSourceConfiguration.AudioSourceConfiguration;
        }

        public AudioSourceConfigurationOptions GetAudioSourceConfigurationOptions(string AudioSourceToken, ref XmlElement[] Any)
        {
            GetAudioSourceConfigurationOptionsRequest request = new GetAudioSourceConfigurationOptionsRequest {
                AudioSourceToken = AudioSourceToken,
                Any = Any
            };
            GetAudioSourceConfigurationOptionsResponse audioSourceConfigurationOptions = ((DeviceIOPort) this).GetAudioSourceConfigurationOptions(request);
            Any = audioSourceConfigurationOptions.Any;
            return audioSourceConfigurationOptions.AudioSourceOptions;
        }

        public AudioSource[] GetAudioSources()
        {
            GetAudioSourcesRequest1 request = new GetAudioSourcesRequest1();
            return ((DeviceIOPort) this).GetAudioSources(request).AudioSources;
        }

        public DigitalInput[] GetDigitalInputs()
        {
            GetDigitalInputsRequest request = new GetDigitalInputsRequest();
            return ((DeviceIOPort) this).GetDigitalInputs(request).DigitalInputs;
        }

        public RelayOutputOptions[] GetRelayOutputOptions(string RelayOutputToken)
        {
            GetRelayOutputOptionsRequest request = new GetRelayOutputOptionsRequest {
                RelayOutputToken = RelayOutputToken
            };
            return ((DeviceIOPort) this).GetRelayOutputOptions(request).RelayOutputOptions;
        }

        public RelayOutput[] GetRelayOutputs()
        {
            GetRelayOutputsRequest1 request = new GetRelayOutputsRequest1();
            return ((DeviceIOPort) this).GetRelayOutputs(request).RelayOutputs;
        }

        public SerialPortConfiguration GetSerialPortConfiguration(string SerialPortToken)
        {
            return base.Channel.GetSerialPortConfiguration(SerialPortToken);
        }

        public SerialPortConfigurationOptions GetSerialPortConfigurationOptions(string SerialPortToken)
        {
            return base.Channel.GetSerialPortConfigurationOptions(SerialPortToken);
        }

        public SerialPort[] GetSerialPorts()
        {
            GetSerialPortsRequest request = new GetSerialPortsRequest();
            return ((DeviceIOPort) this).GetSerialPorts(request).SerialPort;
        }

        public IOServiceCapabilities GetServiceCapabilities()
        {
            return base.Channel.GetServiceCapabilities();
        }

        public VideoOutputConfiguration GetVideoOutputConfiguration(string VideoOutputToken, ref XmlElement[] Any)
        {
            GetVideoOutputConfigurationRequest request = new GetVideoOutputConfigurationRequest {
                VideoOutputToken = VideoOutputToken,
                Any = Any
            };
            GetVideoOutputConfigurationResponse videoOutputConfiguration = ((DeviceIOPort) this).GetVideoOutputConfiguration(request);
            Any = videoOutputConfiguration.Any;
            return videoOutputConfiguration.VideoOutputConfiguration;
        }

        public VideoOutputConfigurationOptions GetVideoOutputConfigurationOptions(string VideoOutputToken, ref XmlElement[] Any)
        {
            GetVideoOutputConfigurationOptionsRequest request = new GetVideoOutputConfigurationOptionsRequest {
                VideoOutputToken = VideoOutputToken,
                Any = Any
            };
            GetVideoOutputConfigurationOptionsResponse videoOutputConfigurationOptions = ((DeviceIOPort) this).GetVideoOutputConfigurationOptions(request);
            Any = videoOutputConfigurationOptions.Any;
            return videoOutputConfigurationOptions.VideoOutputConfigurationOptions;
        }

        public VideoOutput[] GetVideoOutputs()
        {
            GetVideoOutputsRequest request = new GetVideoOutputsRequest();
            return ((DeviceIOPort) this).GetVideoOutputs(request).VideoOutputs;
        }

        public VideoSourceConfiguration GetVideoSourceConfiguration(string VideoSourceToken, ref XmlElement[] Any)
        {
            GetVideoSourceConfigurationRequest request = new GetVideoSourceConfigurationRequest {
                VideoSourceToken = VideoSourceToken,
                Any = Any
            };
            GetVideoSourceConfigurationResponse videoSourceConfiguration = ((DeviceIOPort) this).GetVideoSourceConfiguration(request);
            Any = videoSourceConfiguration.Any;
            return videoSourceConfiguration.VideoSourceConfiguration;
        }

        public VideoSourceConfigurationOptions GetVideoSourceConfigurationOptions(string VideoSourceToken, ref XmlElement[] Any)
        {
            GetVideoSourceConfigurationOptionsRequest request = new GetVideoSourceConfigurationOptionsRequest {
                VideoSourceToken = VideoSourceToken,
                Any = Any
            };
            GetVideoSourceConfigurationOptionsResponse videoSourceConfigurationOptions = ((DeviceIOPort) this).GetVideoSourceConfigurationOptions(request);
            Any = videoSourceConfigurationOptions.Any;
            return videoSourceConfigurationOptions.VideoSourceConfigurationOptions;
        }

        public VideoSource[] GetVideoSources()
        {
            GetVideoSourcesRequest1 request = new GetVideoSourcesRequest1();
            return ((DeviceIOPort) this).GetVideoSources(request).VideoSources;
        }

        public void SendReceiveSerialCommand(ref SerialData SerialData, string TimeOut, string DataLength, string Delimiter)
        {
            SendReceiveSerialCommandRequest request = new SendReceiveSerialCommandRequest {
                SerialData = SerialData,
                TimeOut = TimeOut,
                DataLength = DataLength,
                Delimiter = Delimiter
            };
            SendReceiveSerialCommandResponse response = ((DeviceIOPort) this).SendReceiveSerialCommand(request);
            SerialData = response.SerialData;
        }

        public void SetAudioOutputConfiguration(AudioOutputConfiguration Configuration, bool ForcePersistence, ref XmlElement[] Any)
        {
            SetAudioOutputConfigurationRequest request = new SetAudioOutputConfigurationRequest {
                Configuration = Configuration,
                ForcePersistence = ForcePersistence,
                Any = Any
            };
            SetAudioOutputConfigurationResponse response = ((DeviceIOPort) this).SetAudioOutputConfiguration(request);
            Any = response.Any;
        }

        public void SetAudioSourceConfiguration(AudioSourceConfiguration Configuration, bool ForcePersistence, ref XmlElement[] Any)
        {
            SetAudioSourceConfigurationRequest request = new SetAudioSourceConfigurationRequest {
                Configuration = Configuration,
                ForcePersistence = ForcePersistence,
                Any = Any
            };
            SetAudioSourceConfigurationResponse response = ((DeviceIOPort) this).SetAudioSourceConfiguration(request);
            Any = response.Any;
        }

        public void SetRelayOutputSettings(RelayOutput RelayOutput)
        {
            base.Channel.SetRelayOutputSettings(RelayOutput);
        }

        public void SetRelayOutputState(string RelayOutputToken, RelayLogicalState LogicalState)
        {
            SetRelayOutputStateRequest request = new SetRelayOutputStateRequest {
                RelayOutputToken = RelayOutputToken,
                LogicalState = LogicalState
            };
            ((DeviceIOPort) this).SetRelayOutputState(request);
        }

        public void SetSerialPortConfiguration(SerialPortConfiguration SerialPortConfiguration, bool ForcePersistance)
        {
            base.Channel.SetSerialPortConfiguration(SerialPortConfiguration, ForcePersistance);
        }

        public void SetVideoOutputConfiguration(VideoOutputConfiguration Configuration, bool ForcePersistence, ref XmlElement[] Any)
        {
            SetVideoOutputConfigurationRequest request = new SetVideoOutputConfigurationRequest {
                Configuration = Configuration,
                ForcePersistence = ForcePersistence,
                Any = Any
            };
            SetVideoOutputConfigurationResponse response = ((DeviceIOPort) this).SetVideoOutputConfiguration(request);
            Any = response.Any;
        }

        public void SetVideoSourceConfiguration(VideoSourceConfiguration Configuration, bool ForcePersistence, ref XmlElement[] Any)
        {
            SetVideoSourceConfigurationRequest request = new SetVideoSourceConfigurationRequest {
                Configuration = Configuration,
                ForcePersistence = ForcePersistence,
                Any = Any
            };
            SetVideoSourceConfigurationResponse response = ((DeviceIOPort) this).SetVideoSourceConfiguration(request);
            Any = response.Any;
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetAudioOutputConfigurationResponse DeviceIOPort.GetAudioOutputConfiguration(GetAudioOutputConfigurationRequest request)
        {
            return base.Channel.GetAudioOutputConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetAudioOutputConfigurationOptionsResponse DeviceIOPort.GetAudioOutputConfigurationOptions(GetAudioOutputConfigurationOptionsRequest request)
        {
            return base.Channel.GetAudioOutputConfigurationOptions(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetAudioOutputsResponse1 DeviceIOPort.GetAudioOutputs(GetAudioOutputsRequest1 request)
        {
            return base.Channel.GetAudioOutputs(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetAudioSourceConfigurationResponse DeviceIOPort.GetAudioSourceConfiguration(GetAudioSourceConfigurationRequest request)
        {
            return base.Channel.GetAudioSourceConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetAudioSourceConfigurationOptionsResponse DeviceIOPort.GetAudioSourceConfigurationOptions(GetAudioSourceConfigurationOptionsRequest request)
        {
            return base.Channel.GetAudioSourceConfigurationOptions(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetAudioSourcesResponse1 DeviceIOPort.GetAudioSources(GetAudioSourcesRequest1 request)
        {
            return base.Channel.GetAudioSources(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetDigitalInputsResponse DeviceIOPort.GetDigitalInputs(GetDigitalInputsRequest request)
        {
            return base.Channel.GetDigitalInputs(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetRelayOutputOptionsResponse DeviceIOPort.GetRelayOutputOptions(GetRelayOutputOptionsRequest request)
        {
            return base.Channel.GetRelayOutputOptions(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetRelayOutputsResponse1 DeviceIOPort.GetRelayOutputs(GetRelayOutputsRequest1 request)
        {
            return base.Channel.GetRelayOutputs(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetSerialPortsResponse DeviceIOPort.GetSerialPorts(GetSerialPortsRequest request)
        {
            return base.Channel.GetSerialPorts(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetVideoOutputConfigurationResponse DeviceIOPort.GetVideoOutputConfiguration(GetVideoOutputConfigurationRequest request)
        {
            return base.Channel.GetVideoOutputConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetVideoOutputConfigurationOptionsResponse DeviceIOPort.GetVideoOutputConfigurationOptions(GetVideoOutputConfigurationOptionsRequest request)
        {
            return base.Channel.GetVideoOutputConfigurationOptions(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetVideoOutputsResponse DeviceIOPort.GetVideoOutputs(GetVideoOutputsRequest request)
        {
            return base.Channel.GetVideoOutputs(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetVideoSourceConfigurationResponse DeviceIOPort.GetVideoSourceConfiguration(GetVideoSourceConfigurationRequest request)
        {
            return base.Channel.GetVideoSourceConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetVideoSourceConfigurationOptionsResponse DeviceIOPort.GetVideoSourceConfigurationOptions(GetVideoSourceConfigurationOptionsRequest request)
        {
            return base.Channel.GetVideoSourceConfigurationOptions(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        GetVideoSourcesResponse1 DeviceIOPort.GetVideoSources(GetVideoSourcesRequest1 request)
        {
            return base.Channel.GetVideoSources(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        SendReceiveSerialCommandResponse DeviceIOPort.SendReceiveSerialCommand(SendReceiveSerialCommandRequest request)
        {
            return base.Channel.SendReceiveSerialCommand(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        SetAudioOutputConfigurationResponse DeviceIOPort.SetAudioOutputConfiguration(SetAudioOutputConfigurationRequest request)
        {
            return base.Channel.SetAudioOutputConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        SetAudioSourceConfigurationResponse DeviceIOPort.SetAudioSourceConfiguration(SetAudioSourceConfigurationRequest request)
        {
            return base.Channel.SetAudioSourceConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        SetRelayOutputStateResponse DeviceIOPort.SetRelayOutputState(SetRelayOutputStateRequest request)
        {
            return base.Channel.SetRelayOutputState(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        SetVideoOutputConfigurationResponse DeviceIOPort.SetVideoOutputConfiguration(SetVideoOutputConfigurationRequest request)
        {
            return base.Channel.SetVideoOutputConfiguration(request);
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        SetVideoSourceConfigurationResponse DeviceIOPort.SetVideoSourceConfiguration(SetVideoSourceConfigurationRequest request)
        {
            return base.Channel.SetVideoSourceConfiguration(request);
        }
    }
}

